// 路由鉴权：限制未登录用户可访问的网页功能模块
// 通过全局守卫完成鉴权

import router from '@/router'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'

//隐藏进度条的加载圆圈
Nprogress.configure({ showSpinner: false });
//引入用户相关的仓库
import { useUserStore } from '@/store/modules/user';
//引入大仓库，因为此处与app无关，因此app.use(pinia)影响不到此处
// 需要额外引入调用
import pinia from '@/store'
const userStore = useUserStore(pinia);

//用户未登录可以访问路由得路径
const whiteList = [
    "/home",
    '/hospital/register',
    '/hospital/detail',
    '/hospital/notice',
    '/hospital/close',
    '/hospital/search',
    '/wxlogin'
]

// 添加相应的全局守卫
// 前置守卫
router.beforeEach(async (to, from, next) => {
    Nprogress.start()

    // 判断用户是否登录
    const token = userStore.userInfo.token
    if (token)
        next()
    else {
        // 未登录
        // 判断是否需要登录
        if (to.meta.isAuth)
            next('/login')
        else {
            //用户未登录
            if (whiteList.includes(to.path)) {
                next();
            } else {
                //登录组件显示不来
                userStore.visible = true;
                next({ path: '/home', query: { redirect: to.fullPath } })
            }
        }
    }
})

// 后置守卫
router.afterEach((to, from) => {
    document.title = `医盏明灯|${to.meta.title}`
    Nprogress.done()
})